ইলাস্টিকসার্চ (ElasticSearch)

Dynamic এবং Static Mapping এর ব্যবহার

Latest Technologies - ইলাস্টিকসার্চ (ElasticSearch) - Data Mapping এবং Schema Design | NCTB BOOK

Dynamic এবং Static Mapping এর ব্যবহার

Elasticsearch-এ ডেটা ইন্ডেক্সিং-এর জন্য Dynamic এবং Static Mapping উভয় পদ্ধতি ব্যবহার করা যায়। প্রতিটি পদ্ধতির নিজস্ব সুবিধা এবং ব্যবহারিক ক্ষেত্রে রয়েছে। নিচে Dynamic এবং Static Mapping-এর বিস্তারিত আলোচনা এবং কখন, কীভাবে এগুলো ব্যবহার করা হয় তা নিয়ে আলোচনা করা হলো।

১. Dynamic Mapping

  • Dynamic Mapping ডিফল্টভাবে Elasticsearch-এ সক্রিয় থাকে। এটি একটি স্বয়ংক্রিয় প্রক্রিয়া, যেখানে Elasticsearch নতুন ডকুমেন্ট পাওয়ার পর নতুন ফিল্ড সনাক্ত করে এবং সেগুলোর ডেটা টাইপ স্বয়ংক্রিয়ভাবে নির্ধারণ করে।
  • Dynamic Mapping নতুন ডকুমেন্ট দ্রুত ইন্ডেক্স করার জন্য উপযোগী এবং যেসব ক্ষেত্রে ডেটার কাঠামো পরিবর্তন হতে পারে বা পূর্ব নির্ধারিত না থাকে, সেখানে এটি বেশ কার্যকর।

Dynamic Mapping-এর উদাহরণ

  • যদি Elasticsearch-এ একটি নতুন ডকুমেন্ট পাঠানো হয় এবং এর ফিল্ডগুলো পূর্বে ইন্ডেক্সে নির্ধারণ করা না থাকে, তখন Dynamic Mapping স্বয়ংক্রিয়ভাবে ফিল্ডগুলো ইন্ডেক্স করবে:
POST /my-dynamic-index/_doc
{
 "name": "John Doe",
 "age": 30,
 "occupation": "Engineer",
 "join_date": "2022-10-01"
}
  • এখানে Elasticsearch নতুন "name", "age", "occupation", এবং "join_date" ফিল্ড সনাক্ত করে এবং সেগুলোর ডেটা টাইপ স্বয়ংক্রিয়ভাবে নির্ধারণ করে:
    • "name" -> text
    • "age" -> integer
    • "occupation" -> text
    • "join_date" -> date
  • Dynamic Mapping ফিল্ড এবং ডেটা টাইপ স্বয়ংক্রিয়ভাবে নির্ধারণ করে এবং ডেটা দ্রুত ইন্ডেক্স করা যায়।

Dynamic Mapping কখন ব্যবহার করবেন

  • যখন ডেটার কাঠামো অগ্রিম নির্ধারণ করা সম্ভব নয় বা ডকুমেন্টের ফিল্ড এবং ডেটা টাইপ পরিবর্তন হতে পারে।
  • যখন দ্রুত নতুন ডকুমেন্ট ইন্ডেক্স করা প্রয়োজন এবং প্রতিটি ফিল্ড ম্যানুয়ালি নির্ধারণ করার প্রয়োজন নেই।
  • API বা লজিক্যাল সিস্টেমের মাধ্যমে অপ্রত্যাশিত ফিল্ড বা ডেটা টাইপ তৈরি হতে পারে, সেক্ষেত্রে Dynamic Mapping কার্যকর।

Dynamic Mapping-এর সুবিধা এবং সীমাবদ্ধতা

  • সুবিধা:
    • নতুন ডকুমেন্ট দ্রুত এবং স্বয়ংক্রিয়ভাবে ইন্ডেক্স করা যায়।
    • ম্যানুয়ালি ফিল্ড এবং ডেটা টাইপ নির্ধারণ করতে হয় না।
  • সীমাবদ্ধতা:
    • Dynamic Mapping সবসময় সঠিক ডেটা টাইপ নির্ধারণ করতে পারে না, যেমন সংখ্যা float বা integer হিসেবে সনাক্ত করা।
    • স্কিমা অনুমান করতে গিয়ে সার্চ পারফরম্যান্স কমতে পারে।

২. Static Mapping

  • Static Mapping একটি পদ্ধতি যেখানে ব্যবহারকারী বা ডেভেলপার ইন্ডেক্স তৈরির সময় ডকুমেন্টের প্রতিটি ফিল্ড এবং তার ডেটা টাইপ আগে থেকেই নির্ধারণ করে।
  • Static Mapping ব্যবহার করলে ডকুমেন্টের ফিল্ড এবং ডেটা টাইপ সবসময় সঠিক এবং নির্দিষ্ট থাকে, যা সার্চ অপারেশনের পারফরম্যান্স বাড়ায়।

Static Mapping-এর উদাহরণ

  • একটি ইন্ডেক্স তৈরি করার সময় ফিল্ডের ডেটা টাইপ নির্ধারণ করতে পারেন:
PUT /my-static-index
{
 "mappings": {
   "properties": {
     "name": { "type": "text" },
     "age": { "type": "integer" },
     "occupation": { "type": "keyword" },
     "join_date": { "type": "date", "format": "yyyy-MM-dd" }
   }
 }
}
  • এখানে:
    • "name" ফিল্ড text টাইপ হিসেবে নির্ধারণ করা হয়েছে।
    • "age" ফিল্ড integer হিসেবে, "occupation" ফিল্ড keyword হিসেবে এবং "join_date" ফিল্ড date টাইপ নির্ধারণ করা হয়েছে।
  • ডকুমেন্ট ইন্ডেক্স করার সময় Elasticsearch এই নির্ধারিত ফিল্ড টাইপ অনুসারে কাজ করবে এবং সঠিকভাবে ডেটা ইন্ডেক্স করবে।

Static Mapping কখন ব্যবহার করবেন

  • যখন ডেটার কাঠামো আগে থেকেই নির্ধারণ করা আছে এবং তা পরিবর্তন হওয়ার সম্ভাবনা নেই।
  • যখন ডকুমেন্টের ফিল্ড এবং ডেটা টাইপ নিশ্চিত করা প্রয়োজন এবং সঠিক ডেটা টাইপ নির্ধারণ করে সার্চ অপারেশন অপ্টিমাইজ করা প্রয়োজন।
  • যেসব ক্ষেত্রে পারফরম্যান্স এবং নির্ভুলতা গুরুত্বপূর্ণ, সেখানে Static Mapping ব্যবহার করা উচিত।

Static Mapping-এর সুবিধা এবং সীমাবদ্ধতা

  • সুবিধা:
    • সার্চ এবং ইন্ডেক্সিং পারফরম্যান্স উন্নত হয়, কারণ ডেটা টাইপ নির্ধারণ করা থাকে।
    • ফিল্ড এবং ডেটার নির্ভুলতা নিশ্চিত করা যায়, যা সার্চ অপারেশন সঠিকভাবে পরিচালনা করতে সহায়ক।
  • সীমাবদ্ধতা:
    • Dynamic Mapping-এর তুলনায় Static Mapping কিছুটা সময়সাপেক্ষ, কারণ প্রতিটি ফিল্ড ম্যানুয়ালি নির্ধারণ করতে হয়।
    • নতুন ফিল্ড যোগ করার জন্য Mapping আপডেট করতে হয়, যা Dynamic Mapping-এর মতো স্বয়ংক্রিয়ভাবে সম্পন্ন হয় না।

Dynamic এবং Static Mapping এর সংমিশ্রণ

  • আপনি Dynamic এবং Static Mapping একত্রে ব্যবহার করতে পারেন। যেমন, কিছু ফিল্ড Static Mapping-এ নির্ধারণ করা থাকবে এবং বাকি ফিল্ড Dynamic Mapping-এ যোগ করা হবে।
  • Dynamic Mapping নির্দিষ্ট ক্ষেত্রেই সীমাবদ্ধ রাখতে পারেন, যেখানে Static Mapping-এর বাইরে নতুন ডেটা যোগ করার প্রয়োজন হতে পারে।

Dynamic এবং Static Mapping এর সংমিশ্রণ উদাহরণ

PUT /mixed-index
{
  "mappings": {
    "dynamic": "true",
    "properties": {
      "product_id": { "type": "keyword" },
      "price": { "type": "float" }
    }
  }
}
  • এখানে "product_id" এবং "price" ফিল্ড Static Mapping-এ নির্ধারিত, কিন্তু অন্য নতুন ফিল্ড Dynamic Mapping ব্যবহার করে ইন্ডেক্স করা হবে।

উপসংহার

  • Dynamic Mapping সাধারণত দ্রুত নতুন ডকুমেন্ট ইন্ডেক্স করার জন্য এবং যেখানে ডেটার কাঠামো পূর্ব নির্ধারিত নয়, সেখানে ব্যবহৃত হয়।
  • Static Mapping নির্ধারিত এবং নির্ভুল ডেটার ক্ষেত্রে ব্যবহৃত হয়, যেখানে ফিল্ড এবং ডেটা টাইপ নিশ্চিত করা যায় এবং সার্চ পারফরম্যান্স উন্নত করা যায়।
  • Dynamic এবং Static Mapping একত্রে ব্যবহার করে ডেটার ফ্লেক্সিবিলিটি এবং নির্ভুলতা নিশ্চিত করা যায়, যা ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশনের জন্য কার্যকরী হয়।
Content added By
Promotion